'''
TODO 概况
1、即：查找软件缺陷（手工、工具、编程）
2、个人发展：手工测试 - 自动化测试 - 测试开发 - 测试架构 - 测试专家
3、目标：执行功能测试、回归测试
       进行缺陷的分析和定位
4、具备的能力：
     ① 测试用例设计
     ② 缺陷管理
     ③ 抓包工具
     ④ 数据库操作
     ⑤ 项目环境部署
     ⑥ 项目实战经验
5、课程业务：登录、注册、购物车、搜索商品、订单
6、测试怎么做：
      ① 需求：  分析需求
      ② 测试点：针对需求设计测试点
                  11、拆分测试点：
                             显示：检查功能有没有
                             操作：功能是否正常使用
                             规则
                  12、拆分方式：
                             按照菜单构成
                             按照页面布局：从上到下，从左到右（可以按照原型图或UI设计图）
                             按照需求文字描述
                  13、拆分原则：
                             覆盖需求
                             所见即所测（和当前功能紧密联系的功能）
                             站在用户使用角度
      ③ 用例： 针对测试点编写用例
      ④ 执行： 根据用例执行测试
      ⑤ 缺陷： 针对缺陷进行管理（管理缺陷 - 缺陷创建 - 缺陷跟踪 - 缺陷验证）
      ⑥ 报告： 总结测试报告（缺陷设计 - 缺陷分析 - 遗留缺陷 - 测试总结）
TODO 测试用例
1、用例：用户使用的案例
   测试用例 -Test Case：执行测试时用户案例
2、编写格式：
      ① 用例编号    wx_login_001
      ② 用例标题
      ③ 模块/项目
      ④ 前置条件
      ⑤ 优先级
      ⑥ 测试步骤
      ⑦ 测试数据
      ⑧ 预期结果
      ⑨ 实际结果-也即：测试（执行）结果
            pass：通过
            failed：失败
            block：阻塞（注册未完成，会阻碍登录功能的测试，可以将登录功能的执行结果设置为阻塞，直到注册功能的测试完成）
            N/A：忽略（不适用）-Not Applicable
      ⑩ 备注
TODO 测试点
1、提取方法（等价类划分）
      ① 等价类设计法
            说明：将测试数据中具有某种共同特征的数据集进行划分
            分类：有效等价类：满足需求的数据集
                 无效等价类：不满足需求的数据集
            步骤：明确需求
                 确定有效、无效类
                 提取数据，编写测试用例
            场景：需要大量数据测试输入，但无法穷举测试（输入框、下拉列表、单选复选框）
                 - 典型代表：页面输入框类测试
      ② 边界值设计法
            边界范围节点：上点 - 边界上的点（正好等于）
                       离点 - 距离上点最近的点
                       内点 - 范围内的点
            步骤：明确需求
                 确定有效和无效等价类
                 确定边界范围值
                 提取数据，编写测试用例
            案例优化： 上点 - 必选       0，30
                     内点 - 必选       10       --有效

                     离点 - 开内闭外    1，31    --无效
            场景：大小、尺寸、重量、最大、最小、至多、至少等修饰词语（有边界范围的输入框类测试）
      ③ 判定表设计法
            定义：一种以表格形式表达多条件逻辑判断的工具
            组成：条件桩、动作桩、条件项、动作项
            步骤：明确需求
                 画出判定表
                    列出条件桩、动作桩
                    填写条件项，对条件进行全组合
                    根据条件项的组合确定动作项
                    简化、合并相似的规则（动作）
                 根据规则，编写测试用例

      ④ 场景法设计法
            说明：用流程图描述用户的使用场景
TODO 缺陷
1、缺陷：执行结果和预期结果不一致（bug）
      - 缺陷管理：提交 - 开发修复 - 测试验证 - 关闭缺陷
2、判定标准：
      ① 少功能
      ② 功能错误
      ③ 多功能
      ④ 隐形功能错误：未明确指明，但需要实现的要求
      ⑤ 不易使用：软件难以理解，运行缓慢，用户体验不好
3、产生原因：
      ① 需求阶段： 需求描述不易理解
      ② 设计阶段：设计文档存在错误
      ③ 编码阶段：代码出现错误
      ④ 运行阶段：软硬件系统本身故障导致软件缺陷
4、生命周期：需求规格说明、设计、编码、测试、故障分类、故障隔离、故障解决
5、类型：功能错误、界面UI错误、兼容性、数据、易用性、改进建议、架构
6、核心内容：缺陷id、缺陷标题、缺陷状态、优先级、模块、缺陷描述、附件（图片、日志）
               缺陷id：bug_001
               标题：操作数据描述+预期+实际
                    -输入4位自然数验证qq，预期结果：验证失败，提示必须6-10位自然数，实际结果：验证通过
               缺陷状态：new兼容
               优先级：P2
                      业务流程更高p1，操作类优先级（p2） 比 显示类优先级（p3）高

               模块：qq
               缺陷描述：[前置]
                           1、打开qq界面
                       [步骤]
                           1、输入qq：1234
                           2、点击验证
                       [预期]
                          不通过，提示：qq号应在6-10位自然数
                       [实际]
                          合格

7、跟踪流程：填写缺陷（测试）
           分配缺陷
           修改缺陷（开发）
           回归测试（测试）
           关闭缺陷（测试）
8、提交要素：
      ① 缺陷报告编号
      ② 严重程度（S1-主功能   S2-次要功能   S3-易用性、界面    S4-建议性问题）
      ③ 缺陷优先级（Priority0-24h内解决   Priority1-发布前必须修复   Priority2-可以在下一个版本中修复）
      ④ bug类型（代码错误、兼容性问题、设计缺陷、性能问题）
      ⑤ 缺陷状态（New-新建   Open-打开  Closed-关闭  Postponed-延期）
9、提交注意事项：
      ① 可重现
      ② 唯一性：一个缺陷上报一个问题
      ③ 规范性：符合公司或项目要求
TODO 管理工具-禅道
1、介绍：项目管理工具，多部门协同工作（产品经理、项目经理、研发团队、测试团队）-产品（构想）、研发（执行）、测试（保证）
        三管融合（产品管理、项目管理、质量管理）
       https://demo.zentao.net/user-login.html
       测试人员：撰写用例 - 执行用例 - 提交bug - 验证bug - 关闭bug
2、使用流程
   ①管理用例 - 创建用例 - 评审用例 - 执行用例（可以执行结果和转bug）
      登录禅道
      左侧（测试）-上方（用例）-所有类型（功能测试）-右侧（+建用例）
      所属产品（测试软件开发）-用例名称（登录成功）-前置条件（1、注册成功2、打开登录页面）
      -用例类型（功能测试）-优先级①-用例步骤（1、输入账号：13600001111 2、输入密码：123456 3、点击登录按钮-预期：登录成功，并跳转至个人主页）
      保存
   ②管理缺陷 - 创建缺陷 - 跟踪缺陷 - 验证缺陷
      登录禅道
      测试：左侧（测试）-上方（Bug）-右侧（+提Bug）
           所属产品（测试软件开发）-影响版本（主干）-当前指派（D：开发甲）-代码类型（代码错误）-Bug标题（登录失败（正确用户名+正确密码+点击登录按钮，提示：错误）
          -严重程度①-优先级①-重现步骤（[前置条件] 1、注册成功 2、打开登录页面
                                   [步骤] 1、输入账号：13600001111 2、输入密码：123456  3、点击登录按钮
                                   [结果]登陆失败，提示：错误
                                   [期望] 登录成功，跳转到个人主页）
      开发：右侧-确认-备注（已确认）-保存
           右侧-解决-解决方案（已解决）-解决版本（主干）-备注（已解决，下个版本生效（v1.xx））-保存
      测试：右侧-关闭-备注（已修复）-保存
3、其他项目管理工具：
     ① JIRA：澳大利亚收费软件，类似禅道，做缺陷管理
     ② Testlink
     ③ QC
     ④ bugzilla
TODO 抓包
1、为什么抓包
    ① 功能测试时跳转ui界面验证，验证后端程序处理能力
    ② 分析前端bug还是后端bug
    ③ 弱网测试
    ④ 接口测试时，缺乏接口描述文档，需要抓包获取
2、介绍：通过工具抓取前端和后端的通信内容
3、需要掌握的知识：
    ① 抓包操作（http、https）
    ② 断点操作-拦截修改（请求、响应）
    ③ 弱网测试
4、抓包工具：
    ① fiddler（windows）：断点、弱网、录制请求和响应
    ② Charles（mac、windows）：断点、弱网、录制请求和响应
    ③ 浏览器开发者工具（查看请求和响应首选）
TODO Linux系统
1、为什么学Linux
     ① 部署被测项目环境
         11、远程连接服务器操作（客户端连接服务器）
         12、常用命令（查看目录内容、当前工作目录。。。）
         13、文件操作（复制、移动、删除）
         14、压缩操作（解压）
         15、权限操作（切换账户、文件授权）
         16、系统命令操作（进程相关、重启、关机）
     ② 查看日志
         21、文件查看（全部查看、从头查看、从尾查看、过滤）
         22、文件编辑（编辑器命令）
TODO 学习路径
1、自学视频：
      ① 软件测试基础
      ② Linux、Mysql
      ③ 网络基础知识
      ⑦ 面试辅导

      ⑧ 功能测试
      ⑨ 自动化测试
      ④ 接口测试（三款主流工具）
      ⑤ 性能测试
      ⑥ 软件测试实战项目
2、软件测试工具：
      aaa ① windows下JDK下载
          ② SVN客户端安装包
          ③ soapUI
          ④ robotFramework+eclipse
      aaa ⑤ postman
          ⑥ Maven
          ⑦ loadrunner
      aaa ⑧ Linux、Linux工具使用
          ⑨ Jmeter
             Selenium
      aaa ⑩ git
      aaa 11 Fiddler
          12 adb环境安装
3、测试最全文档模板
      ① 验收测试模板
      ② 性能测试报告模板
      ③ 接口测试用例模板
      ④ 简历模板
      ⑤ 计划报告类模板
      ⑥ 测试用例模板
      ⑦
      ⑧ 测试计划模板
      ⑨ 测试规范模板
      ⑩ 测试方案模板
      11 测试报告模板
'''